<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>LinuxCommand  &middot; sitename</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">


<meta name="description" content="JavaBase description" />

<meta name="keywords" content="one, two, ">


<meta property="og:title" content="LinuxCommand  &middot; sitename ">
<meta property="og:site_name" content="sitename"/>
<meta property="og:url" content="https://lvzongcheng.gitee.io/linux/linuxcommand/" />
<meta property="og:locale" content="en-EN">


<meta property="og:type" content="article" />
<meta property="og:description" content="JavaBase description"/>
<meta property="og:article:published_time" content="2017-05-13T00:00:00Z" />
<meta property="og:article:modified_time" content="2017-05-13T00:00:00Z" />

  
    
<meta property="og:article:tag" content="one">
    
<meta property="og:article:tag" content="two">
    
  

  

<script type="application/ld+json">
  {
    "@context": "http://schema.org",
    "@type": "Article",
    "headline": "LinuxCommand",
    "author": {
      "@type": "Person",
      "name": "LvZongCheng"
    },
    "datePublished": "2017-05-13",
    "description": "JavaBase description",
    "wordCount":  2626 
  }
</script>



<link rel="canonical" href="https://lvzongcheng.gitee.io/linux/linuxcommand/" />

<link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://lvzongcheng.gitee.io/touch-icon-144-precomposed.png">
<link href="https://lvzongcheng.gitee.io/favicon.png" rel="icon">

<meta name="generator" content="Hugo 0.60.0" />

  <!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<link href='https://fonts.googleapis.com/css?family=Merriweather:300%7CRaleway%7COpen+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/highlight/default.css">

  
  
	<script>
	  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

	  ga('create', 'Your Google Analytics tracking code', 'auto');
	  ga('send', 'pageview');

	</script>

</head>
<body>
  <main id="main-wrapper" class="container main_wrapper has-sidebar">
    <header id="main-header" class="container main_header">
  <div class="container brand">
  <div class="container title h1-like">
  <a class="baselink" href="https://lvzongcheng.gitee.io">
  LvZongCheng

</a>

</div>

  
<div class="container topline">
  
  淡定 执著 进取 自律


</div>


</div>

  <nav class="container nav primary no-print">
  

<a class="homelink" href="https://lvzongcheng.gitee.io">home</a>


  
<a href="https://lvzongcheng.gitee.io/framework" title="Show list of Frameworks">Frameworks</a>

<a href="https://lvzongcheng.gitee.io/java" title="Show list of Java">Java</a>

<a href="https://lvzongcheng.gitee.io/linux" title="Show list of Linux">Linux</a>

<a href="https://lvzongcheng.gitee.io/redis" title="Show list of Redis">Redis</a>

<a href="https://lvzongcheng.gitee.io/sql" title="Show list of SQL">SQL</a>

<a href="https://lvzongcheng.gitee.io/Spring" title="Show list of Spring">Spring</a>

<a href="https://lvzongcheng.gitee.io/tools" title="Show list of Tools">Tools</a>

<a href="https://lvzongcheng.gitee.io/webpage" title="Show list of WebPage">WebPage</a>

<a href="https://lvzongcheng.gitee.io/information" title="Show list of information">information</a>

<a href="https://lvzongcheng.gitee.io/network" title="Show list of network">network</a>

<a href="https://lvzongcheng.gitee.io/%E5%BE%AE%E6%9C%8D%E5%8A%A1" title="Show list of 微服务">微服务</a>

<a href="https://lvzongcheng.gitee.io/%E6%80%BB%E7%BB%93" title="Show list of 总结">总结</a>

<a href="https://lvzongcheng.gitee.io/%E6%9C%BA%E5%99%A8%E8%87%AA%E5%8A%A8%E5%8C%96" title="Show list of 机器自动化">机器自动化</a>

<a href="https://lvzongcheng.gitee.io/%E6%B1%87%E7%BC%96" title="Show list of 汇编">汇编</a>

<a href="https://lvzongcheng.gitee.io/%E8%AE%B0%E4%BA%8B%E6%9C%AC" title="Show list of 记事本">记事本</a>


</nav>

<div class="container nav secondary no-print">
  
<a id="contact-link-email" class="contact_link" rel="me" aria-label="Email" href="mailto:Lyc19880405@163.com">
  <span class="fa fa-envelope-square"></span></a>



<a id="contact-link-github" class="contact_link" rel="me" aria-label="Github" href="https://github.com/enten/hugo-boilerplate">
  <span class="fa fa-github-square"></span></a>




 


















</div>


  

</header>


<article id="main-content" class="container main_content single">
  <header class="container hat">
  <h1>LinuxCommand
</h1>

</header>

  <div class="container content">
  <hr>
<h5 id="heading">指令格式标准</h5>
<h2 id="heading1">指令名称：<br>
功能介绍：<br>
语法格式：<br>
常用参数说明：</h2>
<h3 id="linux">Linux常用命令</h3>
<p>命令安装：
安装wget 示例：
apt-get install wget</p>
<p>apt-get update 更新</p>
<p>ps -ef|grep tomcat 查看tomcat 进程
kill -9 端口号   关闭指定端口进程</p>
<p>cat 文件名称|grep &lsquo;查询文本内容&rsquo;
根据日期查询日志
sed -n &lsquo;/2020-10-27 17:17:31/,/2020-10-27 17:17:32/p&rsquo;  文件名称</p>
<h3 id="linux-">Linux 管道符、特殊符号</h3>
<ol>
<li>
<p>管道符：
“|”是Linux管道命令操作符，简称管道符。使用此管道符“|”可以将两个命令分隔开，“|”左边命令
的输出就会作为“”右边命令的输入，此命令可连续使用，第一个命令的输出会作为第二个命令的输
入，第二个命令的输出又会作为第三个命令的输入，依此类推。</p>
</li>
<li>
<p>连接符号： “；”
连续执行多个命令，放在一行执行，中间用“；”分开</p>
</li>
<li>
<p>后台执行： “&amp;”
用户有时候执行命令要花很长时间，可能会影响做其他事情。最好的方法是将它放在后台执行。后台
运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时，在命令的后面加上“&amp;”</p>
</li>
<li>
<p>斜线： /</p>
</li>
</ol>
<p>在路径表示中代表目录</p>
<p>cd /data1/conf/</p>
<p>单一的/，代表root根目录</p>
<p>在运算中，代表除法</p>
<p>a=10/2</p>
<ol start="5">
<li>反斜线： \</li>
</ol>
<p>放在指令前，有取消 aliases的作用；放在特殊符号前，该特殊符号的作用消失,；放在指令的最末端，表示指令连接下一行。</p>
<p>$cat data2</p>
<p>the cost is $4.00</p>
<p>$sed -n &lsquo;/ \ $ /p'data2</p>
<p>the cost is $4.00</p>
<ol start="6">
<li>井号： #</li>
</ol>
<p>#：管理员</p>
<p>$：普通用户</p>
<p>脚本中的：#号是注释</p>
<p>如果被用在指令中，或者引号双引号括住的话，或者在倒斜线的后面，那他就变成一般符号，不具上述的特殊功能。</p>
<ol start="7">
<li>点： .（dot）</li>
</ol>
<p>. 代表当前目录</p>
<p>.. 代表上层目录</p>
<p>如果在档案名称前有 . ，需要ls -a 才会显示</p>
<p>特殊字符点号用来匹配除换行符之外的任意单个字符。它必须匹配一个字符，如果在点号字符的位置没有字符，那么模式就不成立</p>
<p>cat data2</p>
<p>this is a test of a line .</p>
<p>the cat is sleeping .</p>
<p>that is a vey nice hat .</p>
<p>this test is at line four .</p>
<p>at ten o'clock we'll go home .</p>
<p>$sed -n &lsquo;/.at/p&rsquo; data2</p>
<p>the cat is sleeping .</p>
<p>that is a vey nice hat .</p>
<p>this test is at line four .</p>
<p>匹配了第二行，第三行，第四行，因为匹配的是at，第四行的空格也是字符，因此at前面的空格刚好匹配了该模式，第五行，at放在首行就不能匹配该模式</p>
<ol start="8">
<li>逗号： ,</li>
</ol>
<p>在运算中当做区隔的用途</p>
<p>a=5+3，b=3+2</p>
<ol start="9">
<li>惊叹号： ！</li>
</ol>
<p>代表反逻辑的作用，！= ：代表不等于</p>
<p>ls a[！0-9]</p>
<p>显示除了a0、a1&hellip;&hellip;.a9的其他文件</p>
<ol start="10">
<li>问号： ？</li>
</ol>
<p>问号表明前面的字符可以出现0次或1次，不包含null字元</p>
<p>ls da?ta</p>
<ol start="11">
<li>星号： *</li>
</ol>
<p>常用的符号，在文件名扩展上，用来代表任何字元，包含null字元</p>
<h1 id="ls-aa-a1-accesslog">ls a*a a1 access_log</h1>
<p>在运算时。它代表“乘法”</p>
<p>let “aa=2*3”</p>
<p>除了内建指令let，还有一个关于运算的指令expr，星号在这里也担任“乘法”的角色，不过在使用上，它的前面必须加上escape字元</p>
<ol start="12">
<li>锚字符：（^）</li>
</ol>
<p>这个符号在正则表达式中，代表行的“开头”位置，在[]中也与“！”（叹号）一样表示“非”</p>
<ol start="13">
<li>连续分号：（;;）</li>
</ol>
<p>专用在case的选项，担任Terminator的角色</p>
<p>case &ldquo;$fop&rdquo; inhelp) echo &ldquo;Usage: Command -help -version filename&rdquo;;;version) echo &ldquo;version 0.1&rdquo; ;;esac</p>
<ol start="14">
<li>&lsquo;string'单引号</li>
</ol>
<p>被单引号用括号括住的内容，将被视为单一字串。在引号内的代表变数的$符号，没有作用，被视为一般符号处理，防止任何变量替换</p>
<p>heyyou=homeecho &lsquo;$heyyou&rsquo; # we get $heyyou</p>
<ol start="15">
<li>&ldquo;string&quot;双引号</li>
</ol>
<p>被双引号括住的内容，将被视为单一字串，防止通配符扩展，但允许变量扩展，这点与单引号的处理方式不同</p>
<p>heyyou=homeecho &ldquo;$heyyou&rdquo; # we get home</p>
<ol start="16">
<li><code>command</code> 倒引号</li>
</ol>
<p>在前面的单双引号，括住的是字串，但如果该字串是一列命令列，要处理这种情况，得用倒单引号来做</p>
<p>aa=<code>date + %F</code> echo &ldquo;today $aa&rdquo;</p>
<p>在倒引号内的date + %F 会被视为指令，执行的结果会被带入aa变数中</p>
<ol start="17">
<li>**次方运算</li>
</ol>
<p>两个星号在运算时代表“次方”的意思</p>
<p>let &ldquo;aaaa=2**3&rdquo;</p>
<p>echo &ldquo;aaaa=$aaaa&rdquo; 结果：8</p>
<ol start="18">
<li>输出/输入重导向</li>
</ol>
<p><code>&gt;     &gt;&gt;     &lt;     &lt;&lt;     :&gt;     &amp;&gt;     2&amp;&gt;      2&lt;&gt;&gt;&amp;     &gt;&amp;2</code></p>
<p>文件描述，用一个数字（通常为0-9）来表示一个文件</p>
<p>常用的文件描述符如下：</p>
<p>文件描述符               名称                常用缩写                默认值</p>
<pre><code>  0                      标准输入              stdin                     键盘

  1                      标准输出              stdout                   屏幕

  2                  标准错误输出           stderr                   屏幕
</code></pre>
<p>我们简单的用&lt;或&gt; 时，相当于使用0&lt;或1&gt;</p>
<p><code>* cmd &gt; file</code></p>
<p>把cmd命令的输出重定向到文件file中。如果file已经存在，则清空原有文件，使用bash的noclobber选项可以防止复盖原有文件。</p>
<p><code>* cmd &gt;&gt; file</code></p>
<p>把cmd命令的输出重定向到文件file中，如果file已经存在，则把信息加在原有文件後面。</p>
<p><code>* cmd &lt; file</code></p>
<p>使cmd命令从file读入</p>
<p><code>* cmd &lt;&lt; text</code></p>
<p>从命令行读取输入，直到一个与text相同的行结束。除非使用引号把输入括起来，此模式将对输入内容进行shell变量替换。如果使用&laquo;- ，则会忽略接下来输入行首的tab，结束行也可以是一堆tab再加上一个与text相同的内容，可以参考後面的例子。</p>
<p><code>* cmd &lt;&lt;&lt; word</code></p>
<p>把word（而不是文件word）和後面的换行作为输入提供给cmd。</p>
<p><code>* cmd &lt;&gt; file</code></p>
<p>以读写模式把文件file重定向到输入，文件file不会被破坏。仅当应用程序利用了这一特性时，它才是有意义的。</p>
<p><code>* cmd &gt;| file</code></p>
<dl>
<dt>功能同&gt;，但即便在设置了noclobber时也会复盖file文件，注意用的是|而非一些书中说的!，目前仅在csh中仍沿用&gt;!实现这一功能。</dt>
<dd>
<blockquote>
<p>filename      把文件&quot;filename&quot;截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).</p>
</blockquote>
</dd>
</dl>
<p>cmd &gt;&amp;n 把输出送到文件描述符n</p>
<p>cmd m&gt;&amp;n 把输出 到文件符m的信息重定向到文件描述符n</p>
<p>cmd &gt;&amp;- 关闭标准输出</p>
<p>cmd &lt;&amp;n 输入来自文件描述符n</p>
<p>cmd m&lt;&amp;n m来自文件描述各个n</p>
<p>cmd &lt;&amp;- 关闭标准输入</p>
<p>cmd &lt;&amp;n- 移动输入文件描述符n而非复制它。（需要解释）</p>
<p>cmd &gt;&amp;n- 移动输出文件描述符 n而非复制它。（需要解释）</p>
<p>注意： &gt;&amp;实际上复制了文件描述符，这使得cmd &gt; file 2&gt;&amp;1与cmd 2&gt;&amp;1 &gt;file的效果不一样。</p>
<h3 id="heading2">上传下载文件到本地命令：</h3>
<p>与ssh有关的两个命令可以提供很方便的操作：</p>
<ul>
<li>sz：将选定的文件发送（send）到本地机器</li>
<li>rz：运行该命令会弹出一个文件选择窗口，从本地选择文件上传到服务器(receive)
当然，还可以设置一下目录了：
设置一下上传和下载的默认目录<br>
options–&gt;session options–&gt;file transfer 下可以设置上传和下载的目录<br>
剩下的你只要在用SecureCRT登陆linux终端的时候：<br>
发送文件到客户端：sz filename<br>
zmodem接收可以自行启动.<br>
从客户端上传文件到linux服务端：<br>
只要服务端执行 : rz<br>
然后在 SecureCRT 里选文件发送,协议 zmodem<br>
简单吧，如果你以前一直使用ssh，而又没有对外开放ftp服务，你就直接使用这种方式来传输你的文件</li>
</ul>
<ol>
<li>
<p>内部命令：echo
查看内部命令帮助：help echo 或者 man echo</p>
</li>
<li>
<p>外部命令：ls
查看外部命令帮助：ls &ndash;help 或者 man ls 或者 info ls</p>
</li>
<li>
<p>man文档的类型(1~9)
man man-pages 查看每一种类型代表的含义
man 5 passwd (5代表配置文件级别)</p>
</li>
<li>
<p>快捷键：
ctrl + c：停止进程<br>
ctrl + l：清屏<br>
ctrl + r：搜索历史命令</p>
</li>
<li>
<p>善于用tab键补全命令</p>
</li>
<li>
<p>清屏</p>
</li>
</ol>
<ul>
<li>（1）clear
这个命令将会刷新屏幕，本质上只是让终端显示页向后翻了一页，如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。</li>
<li>（2）reset
这个命令将完全刷新终端屏幕，之前的终端输入操作信息将都会被清空，这样虽然比较清爽，但整个命令过程速度有点慢，使用较少。</li>
<li>（3）另外介绍一个用别名来使用清屏命令的方法，如下：</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#f92672">[</span>root@localhost ~<span style="color:#f92672">]</span>$ alias cls<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;clear&#39;</span>
 <span style="color:#f92672">[</span>root@localhost ~<span style="color:#f92672">]</span>$ cls
</code></pre></div><p>执行以上命令后，以后你就可以直接输入 cls 命令来实现和 clear 一样的清屏命令了。</p>
<ol start="7">
<li>
<p>指令名称：  pwd
功能介绍：查看当前位置的全路径
语法格式：pwd
常用参数说明：</p>
</li>
<li>
<p>指令名称：  su
功能介绍：切换用户
语法格式：su 用户名
常用参数说明：</p>
</li>
<li>
<p>指令名称：  sudo 
功能介绍：可以得到超级用户的权限，默认的情况下5分钟root权限就失效。
语法格式：su 用户名
常用参数说明：</p>
</li>
<li>
<p>指令名称：  wget 
功能介绍：下载命令 
语法格式：wget  [参数]   要下载文件的url路径<br>
常用参数说明：<br>
-a&lt;日志文件&gt;：在指定的日志文件中记录资料的执行过程；<br>
-A&lt;后缀名&gt;：指定要下载文件的后缀名，多个后缀名之间使用逗号进行分隔；<br>
-b：进行后台的方式运行wget；<br>
-B&lt;连接地址&gt;：设置参考的连接地址的基地地址；<br>
-c：继续执行上次终端的任务；<br>
-C&lt;标志&gt;：设置服务器数据块功能标志on为激活，off为关闭，默认值为on；<br>
-d：调试模式运行指令；<br>
-D&lt;域名列表&gt;：设置顺着的域名列表，域名之间用“，”分隔；<br>
-e&lt;指令&gt;：作为文件“.wgetrc”中的一部分执行指定的指令；<br>
-h：显示指令帮助信息；<br>
-i&lt;文件&gt;：从指定文件获取要下载的URL地址；<br>
-l&lt;目录列表&gt;：设置顺着的目录列表，多个目录用“，”分隔；<br>
-L：仅顺着关联的连接；<br>
-r：递归下载方式；<br>
-nc：文件存在时，下载文件不覆盖原有文件；<br>
-nv：下载时只显示更新和出错信息，不显示指令的详细执行过程；<br>
-q：不显示指令执;<br>
-nh：不查询主机名称；<br>
-v：显示详细执行过程；<br>
-V：显示版本信息；<br>
&ndash;passive-ftp：使用被动模式PASV连接FTP服务器；<br>
&ndash;follow-ftp：从HTML文件中下载FTP连接文件。</p>
</li>
<li>
<p>指令名称：  cd
功能介绍：  跳转到指定目录
语法格式：  cd  [参数]  文件目录名称
常用参数说明：<br>
cd ~ 或 cd  进入到用户根目录<br>
cd ~itcast  进入到itcast用户根目录<br>
cd -  返回到原来目录<br>
cd ..   返回到上一级目录</p>
</li>
<li>
<p>指令名称：  mkdir
功能介绍：  创建文件夹<br>
语法格式：  mkdir [路径]文件夹名称
常用参数说明： 
mkdir /itcast/{src,WebRoot}   在itcast下同时创建src和WebRoot两个目录</p>
</li>
<li>
<p>指令名称： ls<br>
功能介绍：  查看目录下的所有文件 
语法格式：  ls [参数]
常用参数说明： 
-la  查看用户根目录下的所有文件</p>
</li>
<li>
<p>指令名称：rm<br>
功能介绍：  删除文件夹
语法格式：  rm [选项] DirName<br>
常用参数说明：<br>
-i 删除前逐一询问确认。<br>
　-f 即使原档案属性设为唯读，亦直接删除，无需逐一确认。<br>
　-r 将目录及以下之档案亦逐一删除。</p>
</li>
</ol>
<p>在/itcast目录下面创建一个test.txt文件,同时写入内容&quot;this is test&rdquo;
echo &ldquo;this is test&rdquo; &gt; test.txt</p>
<p>查看一下test.txt的内容
cat test.txt
more test.txt
less test.txt</p>
<p>向README文件追加写入&quot;please read me first&rdquo;
echo &ldquo;please read me first&rdquo; &raquo; README</p>
<p>将test.txt的内容追加到README文件中
cat test.txt &raquo; README</p>
<p>拷贝/itcast目录下的所有文件到/itcast-bak
cp -r /itcast /itcast-bak</p>
<p>进入到/itcast-bak目录，将test.txt移动到src目录下，并修改文件名为Student.java
mv test.txt src/Student.java</p>
<p>在src目录下创建一个struts.xml</p>
<blockquote>
<p>struts.xml</p>
</blockquote>
<p>删除所有的xml类型的文件
rm -rf *.xml</p>
<p>删除/itcast-bak目录和下面的所有文件
rm -rf /itcast-bak</p>
<p>返回到/itcast目录，查看一下README文件有多单词，多少个少行
wc -w README
wc -l README</p>
<p>返回到根目录，将/itcast目录先打包，再用gzip压缩
分步完成：tar -cvf itcast.tar itcast
gzip itcast.tar
一步完成：tar -zcvf itcast.tar.gz itcast</p>
<p>将其解压缩，再取消打包
分步完成：gzip -d itcast.tar.gz 或 gunzip itcast.tar.gz
一步完成：tar -zxvf itcast.tar.gz</p>
<p>将/itcast目录先打包，同时用bzip2压缩，并保存到/tmp目录下
tar -jcvf /tmp/itcast.tar.bz2 itcast</p>
<p>将/tmp/itcast.tar.bz2解压到/usr目录下面
tar -jxvf itcast.tar.bz2 -C /usr/</p>
<hr>
<h4 id="heading3">文件查看命令</h4>
<p>cat     由第一行开始显示内容，并将所有内容输出</p>
<p>tac     从最后一行倒序显示内容，并将所有内容输出</p>
<p>more    根据窗口大小，一页一页的现实文件内容</p>
<p>less    和more类似，但其优点可以往前翻页，而且进行可以搜索字符</p>
<p>head    只显示头几行</p>
<p>tail    只显示最后几行</p>
<p>nl      类似于cat -n，显示时输出行号</p>
<p>tailf   类似于tail -f</p>
<ol>
<li>cat 与 tac</li>
</ol>
<p>cat的功能是将文件从第一行开始连续的将内容输出在屏幕上。但是cat并不常用，原因是当文件大，行数比较多时，屏幕无法全部容下时，只能看到一部分内容。</p>
<p>cat语法：cat [-n]  文件名 （-n ： 显示时，连行号一起输出）</p>
<p>tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现，tac实际上是cat反过来写。这个命令也不常用。</p>
<p>tac语法：tac 文件名。</p>
<ol start="2">
<li>more和less（常用）</li>
</ol>
<p>more的功能是将文件从第一行开始，根据输出窗口的大小，适当的输出文件内容。当一页无法全部输出时，可以用“回车键”向下翻行，用“空格键”向下翻页。退出查看页面，请按“q”键。另外，more还可以配合管道符“|”（pipe）使用，例如:ls -al | more</p>
<p>more的语法：more 文件名</p>
<p>Enter 向下n行，需要定义，默认为1行；</p>
<p>Ctrl f 向下滚动一屏；</p>
<p>空格键 向下滚动一屏；</p>
<p>Ctrl b 返回上一屏；</p>
<p>= 输出当前行的行号；</p>
<p>:f 输出文件名和当前行的行号；</p>
<p>v 调用vi编辑器；</p>
<p>! 命令 调用Shell，并执行命令；</p>
<p>q 退出more</p>
<p>less的功能和more相似，但是使用more无法向前翻页，只能向后翻。</p>
<p>less可以使用【pageup】和【pagedown】键进行前翻页和后翻页，这样看起来更方便。</p>
<p>less的语法：less 文件名</p>
<p>less还有一个功能，可以在文件中进行搜索你想找的内容，假设你想在passwd文件中查找有没有weblogic字符串，那么你可以这样来做：</p>
<p>[root@redhat etc]# less passwd</p>
<p>然后输入：</p>
<p>/weblogic</p>
<p>回车</p>
<p>此时如果有weblogic字符串，linux会把该字符已高亮方式显示。</p>
<p>退出查看页面，请按“q”键。</p>
<ol start="3">
<li>head和tail</li>
</ol>
<p>head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用。head的功能是显示文件的前几行内容</p>
<p>head的语法：head [n number] 文件名 (number 显示行数)</p>
<p>tail的功能恰好和head相反，只显示最后几行内容</p>
<p>tail的语法:tail [-n number] 文件名</p>
<ol start="4">
<li>nl</li>
</ol>
<p>nl的功能和cat -n一样，同样是从第一行输出全部内容，并且把行号显示出来</p>
<p>nl的语法：nl 文件名</p>
<ol start="5">
<li>tailf</li>
</ol>
<p>　tailf命令几乎等同于tail -f，严格说来应该与tail &ndash;follow=name更相似些。当文件改名之后它也能继续跟踪，特别适合于日志文件的跟踪（follow the growth of a log file）。与tail -f不同的是，如果文件不增长，它不会去访问磁盘文件（It is similar to tail -f but does not access the file when it is not growing.  This has the side effect of not updating the access  time for the file, so a filesystem flush does not occur periodically when no log activity is happening.）。tailf特别适合那些便携机上跟踪日志文件，因为它能省电，因为减少了磁盘访问嘛（tailf  is extremely useful for monitoring log files on a laptop when logging is infrequent and the user desires that the hard disk spin down to conserve battery life.）。tailf命令不是个脚本，而是一个用C代码编译后的二进制执行文件，某些Linux安装之后没有这个命令，本文提供了怎么编译安装tailf命令的方法。</p>
<hr>
<h4 id="heading4">用户和组</h4>
<p>添加一个tom用户，设置它属于users组，并添加注释信息
分步完成：useradd tom
usermod -g users tom
usermod -c &ldquo;hr tom&rdquo; tom
一步完成：useradd -g users -c &ldquo;hr tom&rdquo; tom</p>
<p>设置tom用户的密码
passwd tom</p>
<p>修改tom用户的登陆名为tomcat
usermod -l tomcat tom</p>
<p>将tomcat添加到sys和root组中
usermod -G sys,root tomcat</p>
<p>查看tomcat的组信息
groups tomcat</p>
<p>添加一个jerry用户并设置密码
useradd jerry
passwd jerry</p>
<p>添加一个交america的组
groupadd america</p>
<p>将jerry添加到america组中
usermod -g america jerry</p>
<p>将tomcat用户从root组和sys组删除
gpasswd -d tomcat root
gpasswd -d tomcat sys</p>
<p>将america组名修改为am
groupmod -n am america</p>
<h2 id="root">newgrp root
这条命令将当前用户切换到root用户组</h2>
<h4 id="heading5">权限</h4>
<p>创建a.txt和b.txt文件，将他们设为其拥有者和所在组可写入，但其他以外的人则不可写入:
chmod ug+w,o-w a.txt b.txt</p>
<p>创建c.txt文件所有人都可以写和执行
chmod a=wx c.txt 或chmod 666 c.txt</p>
<p>将/itcast目录下的所有文件与子目录皆设为任何人可读取
chmod -R a+r /itcast</p>
<p>将/itcast目录下的所有文件与子目录的拥有者设为root，用户拥有组为users
chown -R root:users /itcast</p>
<h2 id="chown-r-itcastusers-">将当前目录下的所有文件与子目录的用户皆设为itcast，组设为users
chown -R itcast:users *</h2>
<h4 id="heading6">软件安装卸载</h4>
<p>软件安装卸载分：包管理器安装卸载、源代码安装卸载。</p>
<h5 id="heading7">安装软件</h5>
<ol>
<li>
<p>安装JDK
*添加执行权限 
chmod u+x jdk-7u45-linux-i586.bin
*解压
./jdk-7u45-linux-i586.bin
*在/usr目录下创建java目录
mkdir /usr/java
*将/soft目录下的解压的jdk1.7.0_45剪切到/usr/java目录下
mv jdk1.7.0_45/ /usr/java/
*添加环境变量
vim /etc/profile
*在/etc/profile文件最后添加
JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$PATH
*更新配置
source /etc/profile</p>
</li>
<li>
<p>安装tomcat
tar -zxvf /soft/apache-tomcat-7.0.47.tar.gz -C /programs/
cd /programs/apache-tomcat-7.0.47/bin/
./startup.sh</p>
</li>
<li>
<p>安装eclipse</p>
</li>
</ol>
<p>一、通过rpm包管理器安装的软件：
1、rpm包</p>
<p>可以用命令：</p>
<p>#rpm –ql 包名           如 rpm -ql gcc 来查看gcc的文件都安装到哪里去了</p>
<p>#rpm -qa | grep 包名   来查看有没有安装这个包 ，</p>
<p>#rpm -qa              查看全部已经安装的包名</p>
<p>2、deb包</p>
<p>可以用命令：</p>
<p>#dpkg -L 包名 查看如 dpkg -L gcc 来查看gcc的文件。
#dpkg -l | grep 包名  来查看有没有安装某个包 ，</p>
<h1 id="dpkg-l------------">dpkg -l            是查看全部包的</h1>
<p>二、通过源代码安装的软件：
1、如果是通过源代码安装的话 ，在源代码的configure的时候会有参数让你指定安装目录，具体体现在Makefile文件的install目标（也可能会是<em>install</em> 目标，*代表任意字符）里。例如如下Makefile文件的install目标：</p>
<h5 id="heading8">卸载软件</h5>
<h6 id="heading9">二进制分发软件包的卸载</h6>
<h6 id="heading10">源代码分发软件包的卸载</h6>
<hr>
<h3 id="heading11">文件相关命令</h3>
<ol>
<li>
<p>进入到用户根目录
cd ~ 或者 cd
cd ~hadoop
回到原来路径
cd -</p>
</li>
<li>
<p>查看文件详情
stat a.txt</p>
</li>
<li>
<p>移动
mv a.txt /ect/
改名
mv b.txt a.txt
移动并改名
mv a.txt ../b.txt</p>
</li>
<li>
<p>拷贝并改名
cp a.txt /etc/b.txt</p>
</li>
<li>
<p>vi撤销修改
ctrl + u (undo)
恢复
ctrl + r (redo)</p>
</li>
<li>
<p>名令设置别名(重启后无效)
alias ll=&quot;ls -l&rdquo;
取消
unalias ll</p>
</li>
<li>
<p>如果想让别名重启后仍然有效需要修改
vi ~/.bashrc</p>
</li>
<li>
<p>添加用户
useradd hadoop
passwd hadoop</p>
</li>
<li>
<p>创建多个文件
touch a.txt b.txt
touch /home/{a.txt,b.txt}</p>
</li>
<li>
<p>将一个文件的内容复制到里另一个文件中
cat a.txt &gt; b.txt
追加内容
cat a.txt &raquo; b.txt</p>
</li>
<li>
<p>将a.txt 与b.txt设为其拥有者和其所属同一个组者可写入，但其他以外的人则不可写入:
chmod ug+w,o-w a.txt b.txt</p>
</li>
</ol>
<p>chmod a=wx c.txt</p>
<ol start="12">
<li>
<p>将当前目录下的所有文件与子目录皆设为任何人可读取:
chmod -R a+r *</p>
</li>
<li>
<p>将a.txt的用户拥有者设为users,组的拥有者设为jessie:
chown users:jessie a.txt</p>
</li>
<li>
<p>将当前目录下的所有文件与子目录的用户的使用者为lamport,组拥有者皆设为users，
chown -R lamport:users *</p>
</li>
<li>
<p>将所有的java语言程式拷贝至finished子目录中:
cp *.java finished</p>
</li>
<li>
<p>将目前目录及其子目录下所有扩展名是java的文件列出来。
find -name &ldquo;*.java&rdquo;
查找当前目录下扩展名是java 的文件
find -name *.java</p>
</li>
<li>
<p>删除当前目录下扩展名是java的文件
rm -f *.java</p>
</li>
</ol>
<hr>
<h4 id="heading12">系统命令</h4>
<ol>
<li>
<p>查看主机名
hostname [-i 显示主机IP]</p>
</li>
<li>
<p>修改主机名(重启后无效)
hostname hadoop</p>
</li>
<li>
<p>修改主机名(重启后永久生效)
vi /ect/sysconfig/network</p>
</li>
</ol>
<p>4.修改IP(重启后无效)
ifconfig eth0 192.168.12.22</p>
<ol start="5">
<li>
<p>修改IP(重启后永久生效)
vi /etc/sysconfig/network-scripts/ifcfg-eth0</p>
</li>
<li>
<p>查看系统信息
uname -a
uname -r</p>
</li>
<li>
<p>查看ID命令
id -u
id -g</p>
</li>
<li>
<p>日期
date
date +%Y-%m-%d
date +%T
date +%Y-%m-%d&rdquo; &ldquo;%T</p>
</li>
<li>
<p>日历
cal 2012</p>
</li>
<li>
<p>查看文件信息
file filename</p>
</li>
<li>
<p>挂载硬盘
mount
umount
加载windows共享
mount -t cifs //192.168.1.100/tools /mnt</p>
</li>
<li>
<p>查看文件大小
du -h
du -ah</p>
</li>
<li>
<p>查看分区
df -h</p>
</li>
<li>
<p>ssh
ssh <a href="mailto:hadoop@192.168.1.1">hadoop@192.168.1.1</a></p>
</li>
<li>
<p>关机
shutdown -h now /init 0
shutdown -r now /reboot</p>
</li>
</ol>
<hr>
<h4 id="heading13">文件和文件夹属性</h4>
<ol>
<li>
<p>查看文件夹属性
ls -ld test</p>
</li>
<li>
<p>文件夹的rwx
&ndash;x:可以cd进去
r-x:可以cd进去并ls
-wx:可以cd进去并touch，rm自己的文件，并且可以vi其他用户的文件
-wt:可以cd进去并touch，rm自己的文件</p>
</li>
</ol>
<p>　　- rw- r&ndash; r&ndash;
　　普通文件 文件主 组用户 其他用户<br>
r代表只读，w代表写，x代表可执行<br>
如果第一个字符是横线，表示是一个非目录的文件。如果是d，表示是一个目录<br>
<strong>用数字表示的属性的含义：</strong>  
0表示没有权限，1表示可执行权限，2表示可写权限，4表示可读权限，
然后将其相加。所以数字属性的格式应为3个从0到7的八进制数，其顺序是（u）（g）（o）。</p>
<p>ls -ld /tmp
drwxrwxrwt的权限值是1777(sticky)</p>
<ol start="3">
<li>
<p>文件复制命令cp
命令格式：cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 &hellip;  directory
参数说明：
-a:是指archive的意思，也说是指复制所有的目录
-d:若源文件为连接文件(link file)，则复制连接文件属性而非文件本身
-f:强制(force)，若有重复或其它疑问时，不会询问用户，而强制复制
-i:若目标文件(destination)已存在，在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件，而非复制文件本身
-p:与文件的属性一起复制，而非使用默认属性
-r:递归复制，用于目录的复制操作
-s:复制成符号连接文件(symbolic link)，即“快捷方式”文件
-u:若目标文件比源文件旧，更新目标文件
如将/test1目录下的file1复制到/test3目录，并将文件名改为file2,可输入以下命令：
cp /test1/file1 /test3/file2</p>
</li>
<li>
<p>文件移动命令mv
命令格式：mv [-fiv] source destination
参数说明：
-f:force，强制直接移动而不询问
-i:若目标文件(destination)已经存在，就会询问是否覆盖
-u:若目标文件已经存在，且源文件比较新，才会更新
如将/test1目录下的file1复制到/test3 目录，并将文件名改为file2,可输入以下命令：
mv /test1/file1 /test3/file2</p>
</li>
<li>
<p>文件删除命令rm
命令格式：rm [fir] 文件或目录
参数说明：
-f:强制删除
-i:交互模式，在删除前询问用户是否操作
-r:递归删除，常用在目录的删除
如删除/test目录下的file1文件，可以输入以下命令：</p>
</li>
<li>
<p>改变文件或目录的访问权限 chmod</p>
</li>
</ol>
<ul>
<li>文字设定法<br>
chmod ［who］ ［+ | - | =］ ［mode］ 文件名<br>
命令中各选项的含义为：<br>
　　操作对象who可是下述字母中的任一个或者它们的组合：<br>
　　u 表示“用户（user）”，即文件或目录的所有者。<br>
　　g 表示“同组（group）用户”，即与文件属主有相同组ID的所有用户。<br>
　　o 表示“其他（others）用户”。<br>
　　a 表示“所有（all）用户”。它是系统默认值。</li>
</ul>
<p>　　操作符号可以是：<br>
　　+ 添加某个权限。<br>
　　- 取消某个权限。<br>
　　= 赋予给定权限并取消其他所有权限（如果有的话）。<br>
　　设置mode所表示的权限可用下述字母的任意组合：<br>
　　r 可读。<br>
　　w 可写。<br>
　　x 可执行。</p>
<ul>
<li>数字设定法<br>
chmod ［mode］ 文件名<br>
0表示没有权限，1表示可执行权限，2表示可写权限，4表示可读权限，然后将其相加。<br>
r &mdash;&mdash;&mdash;&mdash;4<br>
w &mdash;&mdash;&mdash;&ndash;2<br>
x &mdash;&mdash;&mdash;&mdash;1</li>
</ul>
<ul>
<li>&mdash;&mdash;&mdash;&mdash;0<br>
所以数字属性的格式应为3个从0到7的八进制数，其顺序是（u）（g）（o）。<br>
例如，如果想让某个文件的属主有“读/写”二种权限，需要把4（可读）+2（可写）＝6（读/写）</li>
</ul>
<ol start="7">
<li>
<p>改变文件或目录所属的组  chgrp
语法：chgrp ［选项］ group filename
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID，也可以是/etc/group文件中用户组的组名。
文件名是以空格分开的要改变属组的文件列表，支持通配符。如果用户不是该文件的属主或超级用户，则不能改变该文件的组。
　　该命令的各选项含义为：
　　- R 递归式地改变指定目录及其下的所有子目录和文件的属组。</p>
</li>
<li>
<p>指令名称： chown
功能介绍：更改某个文件或目录的属主和属组 
语法格式：chown ［选项］ 用户或组 文件<br>
例如root用户把自己的一个文件拷贝给用户xu，为了让用户xu能够存取这个文件，
root用户应该把这个文件的属主设为xu，否则，用户xu无法存取这个文件<br>
常用参数说明：<br>
　　- R 递归式地改变指定目录及其下的所有子目录和文件的拥有者。<br>
　　- v 显示chown命令所做的工作。</p>
</li>
<li>
<p>指令名称：whereis
功能介绍：在特定目录中查找符合条件的文件。这些文件的烈性应属于原始代码，二进制文件，或是帮助文件。
语法格式：whereis [-bfmsu][-B &lt;目录&gt;&hellip;][-M &lt;目录&gt;&hellip;][-S &lt;目录&gt;&hellip;][文件&hellip;]
常用参数说明：<br>
　-b 　只查找二进制文件。<br>
　-B &lt;目录&gt; 　只在设置的目录下查找二进制文件。<br>
　-f 　不显示文件名前的路径名称。<br>
　-m 　只查找说明文件。<br>
　-M &lt;目录&gt; 　只在设置的目录下查找说明文件。<br>
　-s 　只查找原始代码文件。<br>
　-S &lt;目录&gt; 　只在设置的目录下查找原始代码文件。<br>
　-u 　查找不包含指定类型的文件。</p>
</li>
</ol>
<hr>
<h4 id="vi">vi编辑器</h4>
<p>i
a/A
o/O
r + ?替换</p>
<p>0:文件当前行的开头
$:文件当前行的末尾
G:文件的最后一行开头
1 + G到第一行 
9 + G到第九行 = :9</p>
<p>dd:删除一行
3dd：删除3行
yy:复制一行
3yy:复制3行
p:粘贴
u:undo
ctrl + r:redo</p>
<p>&ldquo;a剪切板a
&ldquo;b剪切板b</p>
<p>&ldquo;ap粘贴剪切板a的内容</p>
<p>每次进入vi就有行号
vi ~/.vimrc
set nu</p>
<p>:w a.txt另存为
:w &raquo; a.txt内容追加到a.txt</p>
<p>:e!恢复到最初状态</p>
<p>:1,$s/hadoop/root/g 将第一行到追后一行的hadoop替换为root
:1,$s/hadoop/root/c 将第一行到追后一行的hadoop替换为root(有提示)</p>
<hr>
<h4 id="heading14">查找</h4>
<ol>
<li>
<p>查找可执行的命令：
which ls</p>
</li>
<li>
<p>查找可执行的命令和帮助的位置：
whereis ls</p>
</li>
<li>
<p>查找文件(需要更新库:updatedb)
locate hadoop.txt</p>
</li>
<li>
<p>从某个文件夹开始查找
find / -name &ldquo;hadooop*&rdquo;
find / -name &ldquo;hadooop*&rdquo; -ls</p>
</li>
<li>
<p>查找并删除
find / -name &ldquo;hadooop*&rdquo; -ok rm {} ;
find / -name &ldquo;hadooop*&rdquo; -exec rm {} ;</p>
</li>
<li>
<p>查找用户为hadoop的文件
find /usr -user hadoop -ls</p>
</li>
<li>
<p>查找用户为hadoop并且(-a)拥有组为root的文件
find /usr -user hadoop -a -group root -ls</p>
</li>
<li>
<p>查找用户为hadoop或者(-o)拥有组为root并且是文件夹类型的文件
find /usr -user hadoop -o -group root -a -type d</p>
</li>
<li>
<p>查找权限为777的文件
find / -perm -777 -type d -ls</p>
</li>
<li>
<p>显示命令历史
history</p>
</li>
<li>
<p>grep
grep hadoop /etc/password</p>
</li>
</ol>
<hr>
<h4 id="heading15">打包与压缩</h4>
<ol>
<li>
<p>gzip压缩
gzip a.txt</p>
</li>
<li>
<p>解压
gunzip a.txt.gz
gzip -d a.txt.gz</p>
</li>
<li>
<p>bzip2压缩
bzip2 a</p>
</li>
<li>
<p>解压
bunzip2 a.bz2
bzip2 -d a.bz2</p>
</li>
<li>
<p>将当前目录的文件打包
tar -cvf bak.tar .
将/etc/password追加文件到bak.tar中(r)
tar -rvf bak.tar /etc/password</p>
</li>
<li>
<p>解压
tar -xvf bak.tar</p>
</li>
<li>
<p>打包并压缩gzip
tar -zcvf a.tar.gz</p>
</li>
<li>
<p>解压缩
tar -zxvf a.tar.gz
解压到/usr/下
tar -zxvf a.tar.gz -C /usr</p>
</li>
<li>
<p>查看压缩包内容
tar -ztvf a.tar.gz</p>
</li>
</ol>
<p>zip/unzip</p>
<ol start="10">
<li>
<p>打包并压缩成bz2
tar -jcvf a.tar.bz2</p>
</li>
<li>
<p>解压bz2
tar -jxvf a.tar.bz2</p>
</li>
</ol>
<hr>
<h4 id="heading16">正则表达式</h4>
<ol>
<li>
<p>cut截取以:分割保留第七段
grep hadoop /etc/passwd | cut -d: -f7</p>
</li>
<li>
<p>排序
du | sort -n</p>
</li>
<li>
<p>查询不包含hadoop的
grep -v hadoop /etc/passwd</p>
</li>
<li>
<p>正则表达包含hadoop
grep &lsquo;hadoop&rsquo; /etc/passwd</p>
</li>
<li>
<p>正则表达(点代表任意一个字符)
grep &lsquo;h.*p&rsquo; /etc/passwd</p>
</li>
<li>
<p>正则表达以hadoop开头
grep &lsquo;^hadoop&rsquo; /etc/passwd</p>
</li>
<li>
<p>正则表达以hadoop结尾
grep &lsquo;hadoop$&rsquo; /etc/passwd</p>
</li>
</ol>
<p>######规则：</p>
<ul>
<li>.  : 任意一个字符</li>
<li>a* : 任意多个a(零个或多个a)</li>
<li>a? : 零个或一个a</li>
<li>a+ : 一个或多个a</li>
<li>.* : 任意多个任意字符</li>
<li>. : 转义.</li>
<li>&lt;h.*p&gt; ：以h开头，p结尾的一个单词</li>
<li>o{2} : o重复两次</li>
<li>grep &lsquo;^i.{18}n$&rsquo; /usr/share/dict/words</li>
</ul>
<p>查找不是以#开头的行
grep -v &lsquo;^#&rsquo; a.txt | grep -v &lsquo;^$&rsquo;</p>
<p>以h或r开头的
grep &lsquo;^[hr]&rsquo; /etc/passwd</p>
<p>不是以h和r开头的
grep &lsquo;^[^hr]&rsquo; /etc/passwd</p>
<h2 id="grep-hr-etcpasswd">不是以h到r开头的
grep &lsquo;^[^h-r]&rsquo; /etc/passwd</h2>
<h4 id="heading17">输入输出重定向及管道</h4>
<ol>
<li>新建一个文件
touch a.txt</li>
</ol>
<blockquote>
<p>b.txt</p>
</blockquote>
<ol start="2">
<li>
<p>错误重定向:2&gt;
find /etc -name zhaoxing.txt 2&gt; error.txt</p>
</li>
<li>
<p>将正确或错误的信息都输入到log.txt中
find /etc -name passwd &gt; /tmp/log.txt 2&gt;&amp;1 
find /etc -name passwd &amp;&gt; /tmp/log.txt</p>
</li>
<li>
<p>追加&raquo;</p>
</li>
<li>
<p>将小写转为大写（输入重定向）
tr &ldquo;a-z&rdquo; &ldquo;A-Z&rdquo; &lt; /etc/passwd</p>
</li>
<li>
<p>自动创建文件
cat &gt; log.txt &laquo; EXIT</p>
</li>
</ol>
<blockquote>
<p>ccc
ddd
EXI</p>
</blockquote>
<ol start="7">
<li>
<p>查看/etc下的文件有多少个？
ls -l /etc/ | grep &lsquo;^d&rsquo; | wc -l</p>
</li>
<li>
<p>查看/etc下的文件有多少个，并将文件详情输入到result.txt中
ls -l /etc/ | grep &lsquo;^d&rsquo; | tee result.txt | wc -l</p>
</li>
</ol>
<hr>
<h4 id="heading18">进程控制</h4>
<ol>
<li>
<p>查看用户最近登录情况
last
lastlog</p>
</li>
<li>
<p>查看硬盘使用情况
df</p>
</li>
<li>
<p>查看文件大小
du</p>
</li>
<li>
<p>查看内存使用情况
free</p>
</li>
<li>
<p>查看文件系统
/proc</p>
</li>
<li>
<p>查看日志
ls /var/log/</p>
</li>
<li>
<p>查看系统报错日志
tail /var/log/messages</p>
</li>
<li>
<p>查看进程
top</p>
</li>
<li>
<p>结束进程
kill 1234
kill -9 4333 关闭指定端口进程</p>
</li>
</ol>
<hr>
<h4 id="linuxvi">Linux的VI编辑器</h4>
<p>vi编辑器是所有Unix及Linux系统下标准的编辑器，它的强大不逊色于任何最新的文本编辑器，这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本，vi编辑器是完全相同的，因此您可以在其他任何介绍vi的地方进一步了解它。vi也是Linux中最基本的文本编辑器，学会它后，您将在Linux的世界里畅行无阻。</p>
<p>基本上vi可以分为三种状态，分别是命令模式（command mode）、插入模式（Insert mode）和底行模式（last line mode），各模式的功能区分如下： 
1．命令行模式command mode） 
控制屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入插入模式下，或者到底行模式。 
2．插入模式（Insert mode） 
只有在Insert mode下，才可以做文字输入，按【ESC】键可回到命令行模式。
3．底行模式（last line mode） 
将文件保存或退出vi，也可以设置编辑环境，如寻找字符串、列出行号……等。 
不过一般我们在使用时把vi简化成两个模式，就是将底行模式也算入命令行模式。</p>
<h6 id="heading19">实验内容和步骤</h6>
<h5 id="1vi">1．vi的基本操作</h5>
<p>（1）进入vi 
在系统提示符号输入vi及文件名称后，就进入vi全屏幕编辑画面： 
$ vi myfile 
不过有一点要特别注意，就是您进入vi之后，是处于 “命令行模式”，需要切换到“插入模式”才能够输入文字。
（2）切换至插入模式编辑文件 
在“命令行模式”下按一下字母【i】就可以进入“插入模式”，这时候就可以开始输入文字了。 
（3）Insert 的切换 
目前处于“插入模式”，您就只能一直输入文字，如果您发现输错了字！想用光标键往回移动，将该字删除，就要先按一下【ESC】键转到“命令行模式”再删除文字。 
（4）退出vi及保存文件 
在“命令行模式”下，按一下【：】冒号键进入“底行模式”。</p>
<p>例如： 
：w filename （输入 “w filename”将文章以指定的文件名filename保存） 
：wq (输入“wq”，存盘并退出vi) 
：q! (输入q!， 不存盘强制退出vi)</p>
<h5 id="2">2．命令行模式功能键</h5>
<h6 id="1">（1）插入模式</h6>
<ul>
<li>I：  在光标之前插入；</li>
<li>a：  在光标之后插入；</li>
<li>I：  在光标所在行的行首插入；</li>
<li>A：  在光标所在行的行末插入；</li>
<li>o：  在光标所在的行的上面插入一行；</li>
<li>O：  在光标所在的行的下面插入一行；</li>
<li>s：  删除光标后的一个字符，然后进入插入模式；</li>
<li>S：  删除光标所在的行，然后进入插入模式</li>
</ul>
<h6 id="21">（2）从插入模式切换为命令行模式</h6>
<p>【ESC】</p>
<h6 id="3">（3）移动光标</h6>
<ul>
<li>vi可以直接用键盘上的光标来上下左右移动，但正规的vi是用小写英文字母“h”、“j”、“k”、“l”，分别控制光标左、下、上、右移一格。</li>
<li>ctrl+b：屏幕往“后”移动一页。</li>
<li>ctrl+f：屏幕往“前”移动一页。</li>
<li>ctrl+u：屏幕往“后”移动半页。</li>
<li>ctrl+d：屏幕往“前”移动半页。</li>
<li>0：     移到文章的开头。</li>
<li>G：     移动到文章的最后。</li>
<li>$：     移动到光标所在行的“行尾”。</li>
<li>^：     移动到光标所在行的“行首”</li>
<li>w：     光标跳到下个字的开头</li>
<li>e：     光标跳到下个字的字尾</li>
<li>b：     光标回到上个字的开头</li>
<li>#l：    光标移到该行的第#个位置，如：5l,56l。</li>
</ul>
<h6 id="4">（4）删除文字</h6>
<p>x：每按一次，删除光标所在位置的“后面”一个字符。<br>
例如：“6x”表示删除光标所在位置的“后面”6个字符。<br>
X：大写的X，每按一次，删除光标所在位置的“前面”一个字符。<br>
例如：“20X”表示删除光标所在位置的“前面”20个字符。<br>
dd：删除光标所在行。<br>
例如：#dd：从光标所在行开始删除#行</p>
<h6 id="5">（5）复制</h6>
<p>yw：将光标所在之处到字尾的字符复制到缓冲区中。<br>
例如： “#yw”：复制#个字到缓冲区<br>
yy：复制光标所在行到缓冲区。<br>
例如：“#yy”：“6yy”表示拷贝从光标所在的该行“往下数”6行文字。<br>
p：将缓冲区内的字符贴到光标所在位置。注意：所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。</p>
<h6 id="6">（6）替换</h6>
<p>r：替换光标所在处的字符。<br>
R：替换光标所到之处的字符，直到按下【ESC】键为止。</p>
<h6 id="7">（7）回复上一次操作</h6>
<p>u：如果您误执行一个命令，可以马上按下“u”，回到上一个操作。按多次“u”可以执行多次回复。</p>
<h6 id="8">（8）更改</h6>
<p>cw：更改光标所在处的字到字尾处<br>
例如：“c#w”：“c3w”表示更改3个字</p>
<h6 id="9">（9）跳至指定的行</h6>
<p>ctrl+g：列出光标所在行的行号。<br>
例如：“#G”：“15G”表示移动光标至文章的第15行行首。</p>
<h6 id="3-">3． 底行模式命令</h6>
<p>在使用“底行模式”之前，请记住先按【ESC】键确定您已经处于“命令行模式”下后，再按【：】冒号即可进入“底行模式”。 
（1）列出行号 
　set nu：  在文件中的每一行前面列出行号。 
（2）跳到文件中的某一行 
　#：      “#”号表示一个数字，在冒号后输入一个数字，再按回车键就会跳到该行了，如输入数字15，再回车，就会跳到文章的第15行。 
（3）查找字符 
　/关键字：  先按“/”键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按“n”会往后寻找到您要的关键字为止。 
　?关键字：  先按“?”键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按“n”会往前寻找到您要的关键字为止。 
（4）保存文件 
　w：        在冒号输入字母“w”就可以将文件保存起来。 
（5）离开vi 
q： 按“q”就是退出，如果无法离开vi，可以在“q”后跟一个“!”强制离开vi。 
qw：   一般建议离开时，搭配“w”一起使用，这样在退出的时候还可以保存文件。</p>
<h6 id="5vi">5．vi命令列表</h6>
<p>（1）下面列出命令模式下的一些键的功能
h：     左移光标一个字符 
l：     右移光标一个字符 
k：     光标上移一行 
j：     光标下移一行 
^：     光标移动至行首 
0：     数字“0”，光标移至文章的开头 
G：     光标移至文章的最后 
$：     光标移动至行尾 
Ctrl+f：向前翻屏 
Ctrl+b：向后翻屏 
Ctrl+d：向前翻半屏 
Ctrl+u：向后翻半屏 
i：     在光标位置前插入字符 
a：     在光标所在位置的后一个字符开始增加 
o：     插入新的一行，从行首开始输入 
ESC：   从输入状态退至命令状态 
x：     删除光标后面的字符 
#x：    删除光标后的＃个字符 
X：     (大写X)，删除光标前面的字符 
#X：    删除光标前面的#个字符 
dd：    删除光标所在的行 
#dd：   删除从光标所在行数的#行 
yw：    复制光标所在位置的一个字 
#yw：   复制光标所在位置的#个字 
yy：    复制光标所在位置的一行 
#yy：   复制从光标所在行数的#行 
p：     粘贴 
u：     取消操作 
cw：    更改光标所在位置的一个字 
#cw：   更改光标所在位置的#个字 
（2）下面列出行命令模式下的一些指令 
w filename：    储存正在编辑的文件为filename 
wq filename：   储存正在编辑的文件为filename，并退出vi 
q!：            放弃所有修改，退出vi 
set nu：        显示行号 
/或?：          查找，在/后输入要查找的内容 
n：             与/或?一起使用，如果查找的内容不是想要找的关键字，按n或向后（与/联用）或向前（与?联用）继续查找，直到找到为止。</p>
<p>注意：<br>
（1）用vi打开文件后，是处于“命令行模式”，您要切换到“插入模式”才能够输入文字。切换方法：在“命令行模式”下按一下字母【i】就可以进入“插入模式”，这时候你就可以开始输入文字了。 
（2）编辑好后，需从插入模式切换为命令行模式才能对文件进行保存，切换方法：按【ESC】键。 
（3）保存并退出文件：在命令模式下输入：wq即可！（别忘了wq前面的:）</p>
<hr>
<h4 id="yum">yum命令详解</h4>
<p>yum（全称为 Yellow dog Updater, Modified）是一个在Fedora和
RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理，能
够从指定的服务器自动下载RPM包并且安装，可以自动处理依赖性关系，
并且一次安装所有依赖的软体包，无须繁琐地一次次下载、安装。yum
提供了查找、安装、删除某一个、一组甚至全部软件包的命令，而且命
令简洁而又好记。</p>
<p>yum的命令形式一般是如下：yum [options] [command] [package &hellip;]
其中的[options]是可选的，选项包括-h（帮助），
-y（当安装过程提示选择全部为&quot;yes&rdquo;），
-q（不显示安装的过程）等等。
[command]为所要进行的操作，[package &hellip;]是操作的对象。</p>
<h6 id="heading20">概括了部分常用的命令包括：</h6>
<p>自动搜索最快镜像插件：   yum install yum-fastestmirror
安装yum图形窗口插件：    yum install yumex
查看可能批量安装的列表： yum grouplist</p>
<h6 id="heading21"></h6>
<ol>
<li>
<p>安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1</p>
</li>
<li>
<p>更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1</p>
</li>
<li>
<p>查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包</p>
</li>
<li>
<p>删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况</p>
</li>
<li>
<p>清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers</p>
</li>
</ol>
<p>比如，要安装游戏程序组，首先进行查找：
＃：yum grouplist
可以发现，可安装的游戏程序包名字是”Games and Entertainment“，这样就可以进行安装：
＃：yum groupinstall &ldquo;Games and Entertainment&rdquo;
所 有的游戏程序包就自动安装了。在这里Games and Entertainment的名
字必须用双引号选定，因为linux下面遇到空格会认为文件名结束了，因此
必须告诉系统安装的程序包的名字是“Games and Entertainment”而不是“Games&rdquo;。</p>
<p>此外，还可以修改配置文件/etc/yum.conf选择安装源。可见yum进行配置
程序有多方便了吧。更多详细的选项和命令，当然只要在命令提示行下
yum 命令详解：
Redhat和Fedora的软件安装命令是rpm，但是用rpm安装软件最大的麻烦就是需要手动寻找安
装该软件所需要的一系列依赖关系，超级 麻烦不说，要是软件不用了需要卸载的话由于卸载掉了
某个依赖关系而导致其他的软件不能用是非常恼人的。令人高兴的是，Fedora终于推出了类似于 
ubuntu中的apt的命令yum，令Fedora的软件安装变得简单容易。</p>
<h6 id="yum-">Yum 有以下特点：</h6>
<ul>
<li>可以同时配置多个资源库(Repository)</li>
<li>简洁的配置文件(/etc/yum.conf)</li>
<li>自动解决增加或删除rpm包时遇到的倚赖性问题</li>
<li>使用方便</li>
<li>保持与RPM数据库的一致性
yum，是Yellow dog Updater Modified的简称，起初是由yellow dog这一发行版的开发者
Terra Soft研发，用python写成，那时还叫做yup(yellow dog updater)，后经杜克大学的
Linux@Duke开发团队进行改进，遂有此名。yum的宗旨是自动化地升级，安装/移除rpm包，
收集rpm包的相关信息，检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository，
顾名思义，这是软件的仓库，它可以是http或ftp站点， 也可以是本地软件池，但必须包含rpm的header， 
header包括了rpm包的各种信息，包括描述，功能，提供的文件，依赖性等.正是收集了这些 header并加以
分析，才能自动化地完成余下的任务。</li>
</ul>
<ol>
<li>yum的一切配置信息都储存在一个叫yum.conf的配置文件中，通常位于/etc目 录下，这是整个yum系统的重中之重
大家一起来看下：</li>
</ol>
<pre><code class="language-linux" data-lang="linux">[hanlong@localhost F9常用文档]$ sudo more /etc/yum.conf
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1800
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
</code></pre><p>下面简单的对这一文件作简要的说明：<br>
cachedir：yum缓存的目录，yum在此存储下载的rpm包和数据库，一般是/var/cache/yum。<br>
debuglevel：除错级别，0──10,默认是2<br>
logfile：yum的日志文件，默认是/var/log/yum.log。<br>
exactarch，有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包，如果设为1，
则如你安装了一个i386的rpm，则yum不会用686的包来升级。<br>
gpgchkeck= 有1和0两个选择，分别代表是否是否进行gpg校验，如果没有这一项，默认好像也是检查的。</p>
<ol start="2">
<li>
<p>好了，接下来就是yum的使用了，首先用yum来升级软件，yum的操作大都须有超级用户的权限，当然可以用sudo。
yum update，这一步是必须的，yum会从服务器的header目录下载rpm的header，
放在本地的缓存中，这可能会花费一定的时间，但比起yum 给我们带来方便，这些时
间的花费又算的了什么呢？header下载完毕，yum会判断是否有可更新的软件包，如
果有，它会询问你的意见，是否更新，还是说 y吧，把系统始终up to date总是不错的，
这时yum开始下载软件包并使用调用rpm安装，这可能要一定时间，取决于要更新软件
的数目和网络状况，万一网络断了，也没关系，再 进行一次就可以了。升级完毕，以后
每天只要使用yum check-update检查一下有无跟新，如果有，就用yum update进行跟
新，时刻保持系统为最新，堵住一切发现的漏洞。用yum update packagename 对某个
单独包进行升级。<br>
现在简单的把yum软件升级的一些命令罗列一下：<br>
(更新：我在安装wine的时候是用rpm一个一个安装的，先安装以来关系，然后在安装wine的主包，但是刚刚在论坛上发现来一个好的帖子，就yum的本地安装。参数是-localinstall<br>
$yum localinstall wine-*
这样的话，yum会自动安装所有的依赖关系，而不用rpm一个一个的安装了，省了好多工作。<br>
还有一个与他类似的参数：<br>
$yum localupdate wine-*  
如果有wine的新版本，而且你也下载到来本地，就可以这样本地更新wine了。)</p>
</li>
<li>
<p>列出所有可更新的软件清单
命令：yum check-update</p>
</li>
<li>
<p>安装所有更新软件
命令：yum update</p>
</li>
<li>
<p>仅安装指定的软件
命令：yum install</p>
</li>
<li>
<p>仅更新指定的软件
命令：yum update</p>
</li>
<li>
<p>列出所有可安裝的软件清单
命令：yum list</p>
</li>
<li>
<p>使用yum安装和卸载软件，有个前提是yum安装的软件包都是rpm格式的。
安装的命令是，yum install xxx，yum会查询数据库，有无这一软件包，如果有，则检查其依赖冲突关系，如果没有依赖冲突，那么最好，下载安装;如果有，则会给出提示，询问是否要同时安装依赖，或删除冲突的包，你可以自己作出判断
删除的命令是，yum remove xxx，同安装一样，yum也会查询数据库，给出解决依赖关系的提示。</p>
</li>
<li>
<p>用YUM安装软件包
命令：yum install</p>
</li>
<li>
<p>用YUM删除软件包
命令：yum remove</p>
</li>
<li>
<p>用yum查询想安装的软件
我们常会碰到这样的情况，想要安装一个软件，只知道它和某方面有关，但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索，比如我们要则安装一个Instant Messenger，但又不知到底有哪些，这时不妨用 yum search messenger这样的指令进行搜索，yum会搜索所有可用rpm的描述，列出所有描述中和messeger有关的rpm包，于是我们可能得到 gaim，kopete等等，并从中选择。
有时我们还会碰到安装了一个包，但又不知道其用途，我们可以用yum info packagename这个指令来获取信息。</p>
</li>
<li>
<p>使用YUM查找软件包
命令：yum search</p>
</li>
<li>
<p>列出所有可安装的软件包
命令：yum list</p>
</li>
<li>
<p>列出所有可更新的软件包
命令：yum list updates</p>
</li>
<li>
<p>列出所有已安装的软件包
命令：yum list installed</p>
</li>
<li>
<p>列出所有已安装但不在 Yum Repository 內的软件包
命令：yum list extras</p>
</li>
<li>
<p>列出所指定的软件包
命令：yum list</p>
</li>
<li>
<p>使用YUM获取软件包信息
命令：yum info</p>
</li>
<li>
<p>列出所有软件包的信息
命令：yum info</p>
</li>
<li>
<p>列出所有可更新的软件包信息
命令：yum info updates</p>
</li>
<li>
<p>列出所有已安裝的软件包信息
命令：yum info installed</p>
</li>
<li>
<p>列出所有已安裝但不在 Yum Repository 內的软件包信息
命令：yum info extras</p>
</li>
<li>
<p>列出软件包提供哪些文件
命令：yum provides</p>
</li>
<li>
<p>清除YUM缓存
yum 会把下载的软件包和header存储在cache中，而不会自动删除。如果我们觉得它们占用了磁盘
空间，可以使用yum clean指令进行清除，更精确的用法是yum clean headers清除header，
yum clean packages清除下载的rpm包，yum clean all 清除所有</p>
</li>
<li>
<p>清除缓存目录(/var/cache/yum)下的软件包
命令：yum clean packages</p>
</li>
<li>
<p>清除缓存目录(/var/cache/yum)下的 headers</p>
</li>
</ol>
<p>命令：yum clean headers</p>
<ol start="3">
<li>清除缓存目录(/var/cache/yum)下旧的 headers</li>
</ol>
<p>命令：yum clean oldheaders</p>
<ol start="4">
<li>清除缓存目录(/var/cache/yum)下的软件包及旧的headers</li>
</ol>
<p>命令：yum clean, yum clean all (= yum clean packages; yum clean oldheaders)</p>
<h6 id="man">以上所有命令参数的使用都可以用man来查看：</h6>
<ol>
<li>安装图形版yumex：yum install yumex。</li>
<li>安装额外的软件仓库：
rpm.livna.org 的软件包仓库:
rpm -ivh <a href="http://livna-dl.reloumirrors.net">http://livna-dl.reloumirrors.net</a> … ease-7-2.noarch.rpm</li>
</ol>
<p>freshrpms.net 的软件包仓库:
rpm –ivh <a href="http://ftp.freshrpms.net/pub/fre">http://ftp.freshrpms.net/pub/fre</a> … 1.1-1.fc.noarch.rpm</p>
<ol start="3">
<li>安装最快源 yum install yum-fastestmirror</li>
</ol>
<p>资源真的是非常丰富，从Centos到Ubuntu，ISO镜像、升级包，应有尽有，上交的兄弟们真是幸福，羡
慕啊。不过还好，我们好歹也算是在教育网内，凑合着也可以沾点光，下载一些。
网址为：ftp://ftp.sjtu.edu.cn/</p>
<p>相应的yum的repo为</p>
<pre><code>[updates]
name=Fedora updates
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/updates/$releasever/$basearch/
enabled=1
gpgcheck=0
[fedora]
name=Fedora $releasever - $basearch
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
</code></pre><p>如果在机器上安装了apt管理器，则相应的源为
repomd <a href="ftp://ftp.sjtu.edu.cn/">ftp://ftp.sjtu.edu.cn/</a> fedora/linux/updates/$(VERSION)/$(ARCH)/</p>
<p>repomd <a href="ftp://ftp.sjtu.edu.cn/">ftp://ftp.sjtu.edu.cn/</a> fedora/linux/releases/$(VERSION)/Everything/$(ARCH)/os/</p>
<p>这与前面yum的源的格式上有一些差别，需要加以注意。</p>
<hr>
<h4 id="ip-">ip 命令</h4>
<p>1.作用
ip是iproute2软件包里面的一个强大的网络配置工具，它能够替代一些传统的网络管理工具，例如ifconfig、route等，使用权限为超级用户。几乎所有的Linux发行版本都支持该命令。</p>
<p>2.格式
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]</p>
<p>3.主要参数
OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头，分为长、短两种形式。目前，ip支持如表1所示选项。</p>
<p>COMMAND 设置针对指定对象执行的操作，它和对象的类型有关。一般情况下，ip支持对象的增加(add)、删除(delete)和展示(show或list)。
ARGUMENTS 是命令的一些参数，它们倚赖于对象和命令。ip支持两种类型的参数：flag和parameter。flag由一个关键词组成</p>
<h6 id="heading22">命令简介</h6>
<ul>
<li>ip link set&ndash;改变设备的属性. 缩写：set、s</li>
<li>ip link show&ndash;显示设备属性. 缩写：show、list、lst、sh、ls、l</li>
<li>ip address add&ndash;添加一个新的协议地址. 缩写：add、a</li>
<li>ip address delete&ndash;删除一个协议地址. 缩写：delete、del、d</li>
<li>ip address show&ndash;显示协议地址. 缩写：show、list、lst、sh、ls、l</li>
<li>ip address flush&ndash;清除协议地址. 缩写：flush、f</li>
<li>ip neighbour&ndash;neighbour/arp表管理命令</li>
<li>ip neighbour add &ndash; 添加一个新的邻接条目</li>
<li>ip neighbour delete&ndash;删除一个邻接条目</li>
<li>ip neighbour show&ndash;显示网络邻居的信息. 缩写：show、list、sh、ls</li>
<li>ip neighbour flush&ndash;清除邻接条目. 缩写：flush、f</li>
<li>路由表管理 route</li>
<li>ip route add &ndash; 添加新路由</li>
<li>ip route delete&ndash; 删除路由</li>
<li>ip route show &ndash; 列出路由</li>
<li>ip route get &ndash; 获得单个路由 .缩写</li>
<li>ip route &ndash; 路由策略数据库管理命令</li>
<li>ip route &ndash; 路由策略数据库管理命令</li>
<li>ip rule show &ndash; 列出路由规则</li>
<li>ip maddress &ndash; 多播地址管理</li>
<li>ip maddress show &ndash; 列出多播地址</li>
<li>ip maddress add &ndash; 加入多播地址</li>
<li>ip mroute &ndash; 多播路由缓存管理</li>
<li>ip mroute show &ndash; 列出多播路由缓存条目</li>
<li>ip tunnel &ndash; 通道配置</li>
<li>ip tunnel add &ndash; 添加新的通道</li>
<li>ip tunnel change &ndash; 修改现有的通道</li>
<li>ip tunnel delete &ndash; 删除一个通道</li>
<li>ip tunnel show &ndash; 列出现有的通道</li>
<li>ip monitor和rtmon &ndash; 状态监视</li>
</ul>
<h6 id="heading23">联网问题</h6>
<ol>
<li>查看 ip link show 查看端口名称，</li>
<li>进入 /etc/sysconfig/network-scripts/ifcfg-第二个端口名称，
将ONBOOT=NO 修改为yes</li>
</ol>
<hr>
<hr>
<h4 id="tar">tar压缩解压缩命令详解</h4>
<p>-c: 建立压缩档案<br>
-x：解压<br>
-t：查看内容<br>
-r：向压缩归档文件末尾追加文件<br>
-u：更新原压缩包中的文件</p>
<p>这五个是独立的命令，压缩解压都要用到其中一个，可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。</p>
<p>-z：有gzip属性的<br>
-j：有bz2属性的<br>
-Z：有compress属性的<br>
-v：显示所有过程<br>
-O：将文件解开到标准输出</p>
<p>下面的参数-f是必须的</p>
<p>-f: 使用档案名字，切记，这个参数是最后一个参数，后面只能接档案名。</p>
<pre><code># tar -cf all.tar *.jpg
</code></pre><p>这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包，-f指定包的文件名。</p>
<pre><code># tar -rf all.tar *.gif
</code></pre><p>这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。</p>
<pre><code># tar -uf all.tar logo.gif
</code></pre><p>这条命令是更新原来tar包all.tar中logo.gif文件，-u是表示更新文件的意思。</p>
<pre><code># tar -tf all.tar
</code></pre><p>这条命令是列出all.tar包中所有文件，-t是列出文件的意思</p>
<pre><code># tar -xf all.tar
</code></pre><p>这条命令是解出all.tar包中所有文件，-t是解开的意思</p>
<h5 id="heading24">压缩</h5>
<pre><code>tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg 
tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后，并且将其用gzip压缩，生成一个gzip压缩过的包，命名为jpg.tar.gz
 tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后，并且将其用bzip2压缩，生成一个bzip2压缩过的包，命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后，并且将其用compress压缩，生成一个umcompress压缩过的包，命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩，需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩，需要先下载zip for linux
</code></pre><h5 id="heading25">解压</h5>
<pre><code>tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip
</code></pre><h5 id="heading26">总结</h5>
<p>1、*.tar 用 tar -xvf 解压</p>
<p>2、*.gz 用 gzip -d或者gunzip 解压</p>
<p>3、<em>.tar.gz和</em>.tgz 用 tar -xzf 解压</p>
<p>4、*.bz2 用 bzip2 -d或者用bunzip2 解压</p>
<p>5、*.tar.bz2用tar -xjf 解压</p>
<p>6、*.Z 用 uncompress 解压</p>
<p>7、*.tar.Z 用tar -xZf 解压</p>
<p>8、*.rar 用 unrar e解压</p>
<p>9、*.zip 用 unzip 解压</p>

</div>


  
</article>
      <footer id="main-footer" class="container main_footer">
  

  <div class="container nav foot no-print">
  
<a href="https://lvzongcheng.gitee.io/license">license</a>


  <a class="toplink" href="#">back to top</a>

</div>

  <div class="container credits">
  
<div class="container footline">
  
  code with <!-- raw HTML omitted --><!-- raw HTML omitted -->


</div>


  
<div class="container copyright">
  
  (c) 2015 yourname.


</div>


</div>

</footer>

    </main>
    
<script type="text/javascript">
  (function() {
    
    
    if (window.location.hostname == "localhost")
      return;
    var dsq = document.createElement('script'); dsq.async = true; dsq.type = 'text/javascript';
    dsq.src = '//your_disqus_shortname.disqus.com/count.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>



<script src="/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>



    
  </body>
</html>

